//package com.fingard.dsp.bank.directbank.citi01;
//
//import com.alibaba.fastjson.JSON;
//import com.fingard.constant.Format;
//import com.fingard.dsp.bank.directbank.DirectBase;
//import com.fingard.dsp.bank.directbank.citi01.util.HttpClient;
//import com.fingard.dsp.bank.directbank.citi01.util.HttpHelper;
//import com.fingard.dsp.bank.directbank.fngrd01.util.StringHelper;
//import com.fingard.io.FileHelper;
//import com.fingard.net.TcpPortClient;
//import com.fingard.net.TcpReceiver;
//import com.fingard.net.WebRequest;
//import com.fingard.util.FtpUtil;
//import com.fingard.xml.XmlTextReader;
//import com.fingard.xml.XmlTextWriter;
//import com.jcraft.jsch.ChannelSftp;
//import com.jcraft.jsch.JSch;
//import com.jcraft.jsch.Session;
//import com.sun.jersey.api.client.ClientResponse;
//import org.apache.commons.net.util.Base64;
//import sun.misc.BASE64Decoder;
//import sun.misc.BASE64Encoder;
//
//import static com.fingard.io.FileHelper.*;
//import static com.fingard.text.StringHelper.trimEndFileSp;
//
//import java.io.*;
//import java.math.BigDecimal;
//import java.net.URL;
//import java.net.URLEncoder;
//import java.text.DecimalFormat;
//import java.text.SimpleDateFormat;
//import java.util.*;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//
//
//class BaseContent
//{
//    //关联swift文件ID
//    int MtFileID;
//    //银行返回唯一标识 MT.20
//    String BankUniqueID;
//
//    String AccountNumber;
//
//    String FirstDate;
//    //期初临时余额
//    String MidOpeningBal;
//
//    String FirstBal;
//    //期末临时余额 MT.62M
//    String MidClosingBal;
//
//    String FinalDate;
//    String FinalBal;
//    //期末可用余额 MT.64
//    String ClosingAvailBal;
//    //上期末可用余额 MT.65
//    String ForwardAvailBal;
//    //ACK内上传支付文件名 ACK.FILENAME
//    String FileName;
//    //ACK内上传支付文件处理结果 ACK.FILESTATUS
//    String FileStatus;
//    //ACK内上传支付文件失败信息
//    String resultInfo;
//    //ACK文件类型
//    String FileType;
//
//    String transDate;//最后交易日期
//
//    String date2;//期初余额对应的日期
//
//    String cur;//币种
//
//    String payMoney;//交易金额
//}
//
//class  DetailContexts
//{
//    int MtFileID;
//
//    String AccountNumber;
//
//    int  SeqID;
//
//    String RecAccNum;
//
//    String RecAccName;
//
//    String RecAccBannk;
//
//    String TranDate;
//
//    String TranTime;
//
//    String TransAmt;
//
//    String CDFlag;
//
//    String AccBal;
//
//    String Usage;
//
//    String Abstr;
//
//    String cur;//币种
//
//    String fileDate;//文件生成时间
//
//    String valueDate;//起息日
//
//    String seqNo;
//
//    String billType;//类型
//}
//public class CITI01Base extends DirectBase
//{
//    private  String BaseFilePath  = "";
//    private  String DetailFilePaht = "";
//    private  String IsDealedFilePath = "";
//
//    private String SplitFlag = "-";
//
//    private String myDate =  "";
//
//    //tag of MT940&MT942
//    private String tag20 = ":20:";
//    private String tag21 = ":21:";
//    private String tag25 = ":25:";
//    private String tag61 = ":61:";
//    private String tag86 = ":86:";
//
//    //MT940
//    private String tag28 = ":28:";
//    private String tag60F = ":60F:";
//    private String tag60M = ":60M:";
//    private String tag62F = ":62F:";
//    private String tag62M = ":62M:";
//    private String tag64 = ":64:";
//    private String tag65 = ":65:";
//
//    //MT942
//    private String tag28C = ":28C:";
//    private String tag34F = ":34F:";
//    private String tag13 = ":13:";
//    private String tag90D = ":90D:";
//    private String tag90C = ":90C:";
//
//    protected void writeCommonHeader(XmlTextWriter xmlWriter) throws Exception
//    {
//        xmlWriter.writeStartDocByDeclaration("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
//        xmlWriter.writeStartDocByDeclaration("<Document xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"urn:iso:std:iso:20022:tech:xsd:pain.001.001.03\">");
//        //xmlWriter.writeElementAttribute("Document", "xmlns", "urn:iso:std:iso:20022:tech:xsd:pain.008.001.02");
//
//        xmlWriter.writeStartElement("CstmrCdtTrfInitn");
//    }
//
//    protected String getCharset(){
//        return getBankConfig().getCharset("GBK");
//    }
//
//    protected String runCmd(String cmd)
//    {
//        String retCmdResult = "";
//        try
//        {
//            Runtime rt = Runtime.getRuntime();
//            Process proc = rt.exec(cmd);
//            BufferedReader input = new BufferedReader(new InputStreamReader(proc.getInputStream(), "ascii"));
//            String line;
//            while ((line = input.readLine()) != null) {
//                retCmdResult = line;
//            }
//            proc.destroy();
//        }
//        catch (Exception ex)
//        {
//            WriteBankLogLn("执行CMD出错 "+ex.getMessage());
//            ex.printStackTrace();
//        }
//        return retCmdResult;
//    }
//
//    protected  boolean encrpyFile(String FileFullName)
//    {
//        String  pkey;
//        pkey =  getBankConfig().getValueAsString("BankKey");//"GXS_CTE";
//        String privateKey  =  getBankConfig().getValueAsString("privateKey");
//        synchronized(this) {
//            try {
//                String command = null;
//                if (!StringHelper.isNullOrEmpty(pkey)) {
//                    //command = "gpg -se -u bytedance -r " + pkey + " " + FileFullName;
//                    command = "gpg -o " +FileFullName +".gpg -eas -r "+ pkey +" -u " + privateKey +" " + FileFullName;
//                }
//                try {
//                    command = command.replace("\\\\", "\\");
//                }
//                catch (Exception ex){
//                    WriteBankLogLn("command出错：" + ex.getMessage());
//                }
//                WriteBankLogLn("cmd命令：" + command);
//                String str = runCmd(command);
//            } catch (Exception ex) {
//                WriteBankLogLn("GPG加密出错" + ex.getMessage());
//                return false;
//            }
//            boolean isGPGFileExist = false;
//            File GPGFile = new File(FileFullName + ".gpg");
//            File OrigFile = new File(FileFullName);
//            return GPGFile.exists();
//        }
//    }
//
//    protected boolean exportContentToFile(String content,String FileFullName){
//        WriteBankLogLn("生成支付报文："+content);
//        if(StringHelper.isNullOrEmpty(content)){
//            WriteBankLogLn("传入文件内容为空");
//            return false;
//        }
//        if(StringHelper.isNullOrEmpty(FileFullName)){
//            WriteBankLogLn("生成支付文件路径不正确或文件名无效");
//            return false;
//        }
//        try {
//            writeFile(FileFullName, content, "ascii");
//        } catch (Exception ex){
//            WriteBankLogLn("生成文件失败");
//            return false;
//        }
//        return true;
//    }
//
//    protected  boolean decrpyFile(String FullName)
//    {
//        File myFile = new File(FullName.trim());
//        String FileName = myFile.getName();
//        String DecrpyFileName = getBankConfig().getValueAsString("DealedPath") + File.separator +FileName;
//        if(StringHelper.isNullOrEmpty(FileName))
//        {
//            return false;
//        }
//        synchronized(this)
//        {
//            try
//            {
//                String command = "gpg -o " + DecrpyFileName + " -d " + FullName;
//                command = command.replace("\\\\", "\\");
//                WriteBankLogLn("cmd命令：" + command);
//                String str  = runCmd(command);
//            }
//            catch (Exception ex)
//            {
//                WriteBankLogLn("解密报文出错");
//            }
//            File _file = new File(DecrpyFileName);
//            if(!_file.exists())
//            {
//                return false;
//            }
//        }
//        return  true;
//    }
//
//    protected boolean decryptFile(String fileName){
//        String decryptPath = getBankConfig().getValueAsString("DecryptPath")+File.separator;
//        FileHelper.mkdir(decryptPath);
//        String localhostSavePath = getBankConfig().getValueAsString("ReceiveFilePath")+File.separator+fileName;
//        if(!FileHelper.existFile(localhostSavePath)){
//            WriteBankLogLn2("文件不存在："+localhostSavePath);
//            return false;
//        }
//        String decryptFile = decryptPath+fileName;
//        //表示文件已经解析
//        String cmd = "gpg -o "+decryptFile+" -d "+localhostSavePath;
//        WriteBankLogLn2("执行CRM命令："+cmd);
//        synchronized (this){
//            runCmd(cmd);
//            if(FileHelper.existFile(decryptFile)){
//                WriteBankLogLn2("解密报文成功："+fileName);
//                System.out.println("解密报文成功：" + fileName);
//                String successFilePath = getBankConfig().getValueAsString("SuccessPath")+File.separator
//                        +Format.Date8Format.format(new Date())+File.separator+"receive"+File.separator;
//                FileHelper.mkdir(successFilePath);
//                boolean flag = new File(localhostSavePath).renameTo(new File(successFilePath+fileName));
//                if(flag){
//                    WriteBankLogLn2("文件："+localhostSavePath+" ---移动至---\r\n"+successFilePath+fileName+"  成功");
//                }else {
//                    WriteBankLogLn2("文件："+localhostSavePath+" ---移动至---\r\n"+successFilePath+fileName+"  失败");
//                }
//            }else {
//                WriteBankLogLn2("解密报文失败："+fileName);
//                String exceptionFilePath = getBankConfig().getValueAsString("ExceptionPath")+File.separator
//                        +Format.Date8Format.format(new Date())+File.separator+"receive"+File.separator;
//                FileHelper.mkdir(exceptionFilePath);
//                boolean flag = new File(localhostSavePath).renameTo(new File(exceptionFilePath+fileName));
//                if(flag){
//                    WriteBankLogLn2("文件："+localhostSavePath+" ---移动至---\r\n"+exceptionFilePath+fileName+"  成功");
//                }else {
//                    WriteBankLogLn2("文件："+localhostSavePath+" ---移动至---\r\n"+exceptionFilePath+fileName+"  失败");
//                }
//            }
//            if(!FileHelper.existFile(decryptFile)){
//                return false;
//            }
//            return true;
//        }
//    }
//
//    protected Map<String, Object> getChannel() throws Exception
//    {
//        Map<String, Object> jschMap = new HashMap<String, Object>();
//        String ftpHost =  getBankConfig().getValueAsString("IP");//"csftp-citi.ms.gxs.com";
//        String port = getBankConfig().getValueAsString("PORT");//"22";
//        String ftpUserName = getBankConfig().getValueAsString("USERNAME");//"BYTEDANCE";
//        String ftpPassword = getBankConfig().getValueAsString("PASSWORD");//"xLdm342dQa";
//        int timeout = 60000;//Integer.parseInt(getBankConfig().getValueAsString("TIMEOUT"));
//
//        int ftpPort = 22;//如果没有设置则默认为22
//        if (StringHelper.isNullOrEmpty(port)) {
//            ftpPort = Integer.parseInt(port);
//        }
//        //1、创建JSch类
//        JSch jsch = new JSch();
//
//        Session session = jsch.getSession(ftpUserName, ftpHost, ftpPort);
//        if (ftpPassword != null) {
//            session.setPassword(ftpPassword);
//        }
//        Properties config = new Properties();
//        config.put("StrictHostKeyChecking", "no");
//        session.setConfig(config); // 为Session对象设置properties
//        session.setTimeout(timeout); // 设置timeout时间
//        session.connect(); // 通过Session建立链接
//        //3、在该session会话中开启一个SFTP通道，之后就可以在该通道中进行文件传输了
//        ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
//        channelSftp.connect();
//        jschMap.put("session", session);
//        jschMap.put("channel", channelSftp);
//        return jschMap;
//    }
//
//    protected void closeChannel(Session session, ChannelSftp channel) throws Exception
//    {
//        if (channel != null) {
//            channel.disconnect();
//        }
//        if (session != null) {
//            session.disconnect();
//        }
//    }
//
//    protected boolean uploadFile(String FileName,String FileContent) throws Exception
//    {
//        WriteBankLogLn("开始上传文件到sftp。。。。。。" );
//        InputStream is = new ByteArrayInputStream(FileContent.getBytes("ascii"));
//        int fileLen = is.available();//上传字节长度
//        Map<String, Object> jschMap = getChannel();
//
//        try
//        {
//            ChannelSftp channel = (ChannelSftp) jschMap.get("channel");
//            String BankPath   =  getBankConfig().getValueAsString("BankUploadPath");
////            channel.put(is, "/TEST/" + FileName);//上传
//            channel.put(is, BankPath + FileName);//上传
//        }
//        catch (Exception ex)
//        {
//            WriteBankLogLn("上传文件失败：" + ex.getMessage());
//            return false;
//        }
//        finally
//        {
//            closeChannel((Session) jschMap.get("session"), (ChannelSftp) jschMap.get("channel"));
//            is.close();
//        }
//        WriteBankLogLn("上传文件成功：文件名" + FileName);
//        return true;
//    }
//
//    protected String[] analysisAckFile(String FileName,BaseContent p_BaseContexts,String oldFilePath) throws  Exception
//    {
//        //WriteBankLogLn("处理ACK文件：" + FileName);
//        //String FullPath  =  getBankConfig().getValueAsString("DealedPath") + FileName;
//        File myFile = new File(oldFilePath);
//        if(myFile.length()>0){
//            StringBuilder ACKBuilder = new StringBuilder();
//            try {
//                BufferedReader br = new BufferedReader(new FileReader(myFile));
//                String s;
//                while((s = br.readLine())!=null) {
//                    ACKBuilder.append(s);
//                }
//                br.close();
//            }catch(Exception ex) {
//                WriteBankLogLn("读取ACK文件出错："+ex.getMessage());
//                return null;
//            }
//            int OrgnlMsgIdStart = ACKBuilder.toString().indexOf("OrgnlMsgId");
//            int OrgnlMsgIdEnd = ACKBuilder.toString().lastIndexOf("OrgnlMsgId");
//            p_BaseContexts.FileName = ACKBuilder.substring(OrgnlMsgIdStart + "OrgnlMsgId>".length(),OrgnlMsgIdEnd - "<".length() - 1);
//
//            if(FileName.contains("FILEACK")) {
//                int GrpStsStart = ACKBuilder.toString().indexOf("GrpSts");
//                int GrpStsEnd = ACKBuilder.toString().lastIndexOf("GrpSts");
//                p_BaseContexts.FileStatus  = ACKBuilder.substring(GrpStsStart + "GrpSts>".length(), GrpStsEnd - "<".length() - 1);
//                p_BaseContexts.FileType="FILEACK";
//            } else if(FileName.contains("POSACK")){
//                int AddtlInfStart =  ACKBuilder.toString().indexOf("AddtlInf");
//                int AddtlInfEnd = ACKBuilder.toString().lastIndexOf("AddtlInf");
//                String AddtInf = ACKBuilder.substring(AddtlInfStart,AddtlInfEnd);
//                if(AddtInf.contains("Accepted")) {
//                    p_BaseContexts.FileStatus = "ACK";
//                } else {
//                    p_BaseContexts.FileStatus = "FAIL";
//                }
//                p_BaseContexts.FileType="POSACK";
//            } else if(FileName.contains("NEGACK")){
//                int statusStart=ACKBuilder.toString().indexOf("TxSts");
//                int statusEnd=ACKBuilder.toString().lastIndexOf("TxSts");
//                p_BaseContexts.FileStatus= ACKBuilder.substring(statusStart + "TxSts>".length(), statusEnd - "</".length());
//                int AddtlInfStart=ACKBuilder.toString().indexOf("AddtlInf");
//                int AddtlInfEnd = ACKBuilder.toString().lastIndexOf("AddtlInf");
//                p_BaseContexts.resultInfo=ACKBuilder.substring(AddtlInfStart+"AddtlInf>".length(),AddtlInfEnd-"</".length())
//                        .replaceAll("<AddtlInf>"," ").replaceAll("</AddtlInf>","");
//                p_BaseContexts.FileType="NEGACK";
//            }
//            if (!StringHelper.isNullOrEmpty(p_BaseContexts.FileName) && !StringHelper.isNullOrEmpty(p_BaseContexts.FileStatus)) {
//                if(!StringHelper.isNullOrEmpty(p_BaseContexts.resultInfo)){
//                    return new String[]{p_BaseContexts.FileName,p_BaseContexts.FileStatus,p_BaseContexts.resultInfo,p_BaseContexts.FileType};
//                }else {
//                    return new String[]{p_BaseContexts.FileName,p_BaseContexts.FileStatus,p_BaseContexts.FileType};
//                }
//            }
//        }
//        return null;
//    }
//
//    protected Map<List<BaseContent> ,DetailContexts[]> analysisMTFile(String FullName) throws Exception
//    {
//        myDate = FullName;
//        List<BaseContent> BaseContents = new ArrayList();
//        ArrayList<DetailContexts> list  = new ArrayList<DetailContexts>();
//        //默认大小，若当日交易笔数过多，可通过config进行调整
////        String count = getBankConfig().getValueAsString("perdayCount");
////        int allcount = 1000;
////        if(!StringHelper.isNullOrEmpty(count)){
////            allcount = Integer.parseInt(count);
////        }
// //       DetailContexts[] dealedDetail = new DetailContexts[allcount];
//        Map retMap = new HashMap<List<BaseContent> ,DetailContexts[]>();
//        StringBuilder AllText = new StringBuilder();
//        String[]  SplitArray = new String[] {":28:20", ":28:21", ":28:25", ":28:28", ":28:61", ":28:64", ":28:65", ":28:86"};
//        int DetailCount = 0;
//
//        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FullName)));
//        String sLine;
//        while((sLine = br.readLine())!=null)
//        {
//            if(!StringHelper.isNullOrEmpty(sLine))
//            {
//                if (sLine.length() > 1 && sLine.contains(SplitFlag))//明细分隔符为tagendflag且长度1字节
//                {
//                    sLine = sLine.replace(SplitFlag, "");
//                }
//                if (sLine.length()  > 0 && Contain(SplitArray, SplitFlag))
//                {
//                    sLine += "00";
//                }
//                AllText.append(sLine);
//            }
//        }
//        br.close();
//        String[] AllFileContent = AllText.toString().split(SplitFlag);
//        for(String FileContext : AllFileContent)
//        {
//            if(FileContext.length() <= 0)
//            {
//                continue;
//            }
//            String SplitTag = tag62F;
//            if (!FileContext.contains(SplitTag))
//            {
//                SplitTag = tag62M;
//            }
//            if (!FileContext.contains(SplitTag))
//            {
//                SplitTag = tag90D;
//            }
//            if (!FileContext.contains(SplitTag))
//            {
//                SplitTag = tag90C;
//            }
//            if (!FileContext.contains(SplitTag))
//            {
//                SplitTag = SplitFlag;
//            }
//            int start61 = !FileContext.contains(tag61) ? 0 : FileContext.indexOf(tag61) + tag61.length();
//            int length86 = start61 == 0 ? 0 : FileContext.indexOf(SplitTag) - start61;
//            String DetailContext = FileContext.substring(start61, length86);
//            String myBaseContext = length86 == 0 ? FileContext.replace(tag61, "").replace("'", "''") : FileContext.replace(DetailContext, "").replace(tag61, "").replace("'", "''");
//            DetailContext = DetailContext.replace("'", "''");
//
//            //读取文件内容
//            BaseContent _baseContent = new BaseContent();
//            int start_tag20 = myBaseContext.indexOf(tag20)+ tag20.length();
//            String BankUniqueID = myBaseContext.substring(start_tag20,!myBaseContext.contains(tag21) ? myBaseContext.indexOf(tag25):myBaseContext.indexOf(tag21));
//            if(GetBankUniqueID(1,BankUniqueID))
//            {
//                _baseContent.MtFileID = 1;
//                _baseContent.BankUniqueID = BankUniqueID;
//
//                //tag25
//                String _accountNumber;
//                _accountNumber = splitFileContent(tag25, tag28, myBaseContext,tag28C);
//                _baseContent.AccountNumber = _accountNumber;
//
//                //tag60F/tag60M
//                String _first = "";
//                if (myBaseContext.contains(tag60F))
//                {
//                    _first = splitFileContent(tag60F,tag62F,myBaseContext,tag62M);
//                }
//                else if(myBaseContext.contains(tag60M))
//                {
//                    _first = splitFileContent(tag60M,tag62F,myBaseContext,tag62M);
//                }
////                _baseContent.FirstDate = _first.substring(1, 7);
////                _baseContent.FirstBal = _first.substring(10).replace(",", ".");
//
//                //tag62F/tag62M
//                String tag62 = splitFileContent(tag62F,"",myBaseContext,tag62M);
//                String nexttag = "";
//                if (tag62.contains(tag64))
//                    nexttag = tag64;
//                else if (tag62.contains(tag65))
//                    nexttag = tag65;
//                else if (tag62.contains(tag86))
//                    nexttag = tag86;
//                if (!StringHelper.isNullOrEmpty(nexttag))
//                {
//                    int tmp62Flength = tag62.indexOf(nexttag);
//                    tag62 = tag62.substring(0, tmp62Flength);
//                }
//                _baseContent.FinalDate = tag62.substring(1, 7);
//                if(myBaseContext.contains(tag62F))
//                {
//                    _baseContent.FinalBal = tag62.substring(10).replace(",", ".");
//                }
//                else
//                {
//                    _baseContent.MidClosingBal = tag62.substring(10).replace(",", ".");
//                }
//
//                //tag64
//                if (myBaseContext.contains(tag64))
//                {
//                    String endTag = myBaseContext.contains(tag65) ? tag65 :tag86;
//                    String _closingAvailBal;
//                    _closingAvailBal = splitFileContent(tag64,endTag,myBaseContext,"");
//                    _baseContent.ClosingAvailBal = _closingAvailBal.substring(10).replace(",", ".");
//                }
//
//                //tag65
//                if(myBaseContext.contains(tag65))
//                {
//                    String _forwardAvailBal;
//                    _forwardAvailBal = splitFileContent(tag65,tag86,myBaseContext,"");
//                    _baseContent.ForwardAvailBal = _forwardAvailBal.substring(10).replace(",", ".");
//                }
//                BaseContents.add(_baseContent);
//                //detail
//                DetailContexts[] result = DealTransDetail(DetailContext.split(tag61),_accountNumber);
//                for(int i = 0;i<result.length;i++)
//                {
//                    if(result[i] == null || result[i].AccountNumber == null)
//                        break;
//                    list.add(result[i]);
//                    //dealedDetail[DetailCount + i] = result[i];
//                    DetailCount++;
//                }
//            }
//        }
//        DetailContexts[] details =  new DetailContexts[list.size()];
//        list.toArray(details);
//        retMap.put(BaseContents,details);
//        return retMap;
//    }
//
//    /**
//     * MT940文件解析
//     * @param FullName
//     * @return
//     * @throws Exception
//     */
//    protected Map<List<BaseContent> ,DetailContexts[]> analysisMT940File(String FullName) throws Exception {
//        //判断文件存不存在，不存在就不处理
//        String context2 = FileHelper.readFileText(FullName,"GBK");
//        if(com.fingard.text.StringHelper.isNullOrEmpty(context2)){
//            WriteBankLogLn("文件解析失败：-------"+FullName);
//            return null;
//        }
//        //开始解析MT940文件
//        List<BaseContent> BaseContents = new ArrayList();
//        List<DetailContexts> list  = new ArrayList<DetailContexts>();
//        Map retMap = new HashMap<List<BaseContent> ,DetailContexts[]>();
//        StringBuilder AllText = new StringBuilder();
//        String[]  SplitArray = new String[] {":28:20", ":28:21", ":28:25", ":28:28", ":28:61", ":28:64", ":28:65", ":28:86"};
//        int DetailCount = 0;
//        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FullName)));
//        String sLine;
//        while((sLine = br.readLine())!=null){
//            if(!StringHelper.isNullOrEmpty(sLine)){
//                //明细分隔符为tagendflag且长度1字节
//                if (sLine.length() > 1 && sLine.contains(SplitFlag)){
//                    sLine = sLine.replace(SplitFlag, "");
//                }
//                if (sLine.length()  > 0 && Contain(SplitArray, SplitFlag)){
//                    sLine += "00";
//                }
//                AllText.append(sLine);
//            }
//        }
//        br.close();
//        String[] AllFileContent = AllText.toString().split(SplitFlag);
//        for(String FileContext : AllFileContent){
//            if(FileContext.length() <= 0){
//                continue;
//            }
//            String SplitTag = tag62F;
//            if (!FileContext.contains(SplitTag)){
//                SplitTag = tag62M;
//            }
//            if (!FileContext.contains(SplitTag)){
//                SplitTag = tag90D;
//            }
//            if (!FileContext.contains(SplitTag)){
//                SplitTag = tag90C;
//            }
//            if (!FileContext.contains(SplitTag)){
//                SplitTag = SplitFlag;
//            }
//            int start61 = !FileContext.contains(tag61) ? 0 : FileContext.indexOf(tag61) + tag61.length();
//            int length86 = start61 == 0 ? 0 : FileContext.indexOf(SplitTag);
//            String DetailContext = FileContext.substring(start61, length86);//明细信息
//            String myBaseContext = length86 == 0 ? FileContext.replace(tag61, "").replace("'", "''")
//                    : FileContext.replace(DetailContext, "").replace(tag61, "").replace("'", "''");//非明细信息
//            DetailContext = DetailContext.replace("'", "''");
//            //读取文件内容
//            BaseContent _baseContent = new BaseContent();
//            int start_tag20 = myBaseContext.indexOf(tag20)+ tag20.length();
//            String BankUniqueID = myBaseContext.substring(start_tag20,!myBaseContext.contains(tag21) ? myBaseContext.indexOf(tag25):myBaseContext.indexOf(tag21));
//            if(GetBankUniqueID(1,BankUniqueID)){
//                _baseContent.MtFileID = 1;
//                _baseContent.BankUniqueID = BankUniqueID;
//                //帐号
//                String _accountNumber = myBaseContext.substring(myBaseContext.indexOf(tag25)+tag25.length(),myBaseContext.indexOf(tag28));
//                _baseContent.AccountNumber = _accountNumber;
//                //币种
//                String content=myBaseContext.substring(myBaseContext.indexOf(tag60F)+tag60F.length(),myBaseContext.indexOf(tag62F));
//                _baseContent.cur=content.substring(7,10);
//                //期初余额对应的日期
//                _baseContent.date2=content.substring(1,7);
//                //期初余额
//                String openingBal=content.substring(10).replace(",",".");
//                openingBal=amtCheck2(openingBal);
//                _baseContent.MidOpeningBal=openingBal;
//                //期末余额
//                String closingBal=myBaseContext.substring(myBaseContext.indexOf(tag62F)+tag62F.length(),myBaseContext.indexOf(tag64))
//                        .substring(10).replace(",",".");
//                closingBal=amtCheck2(closingBal);
//                _baseContent.MidClosingBal=closingBal;
//                //可用余额
//                String availBal="";
//                if(myBaseContext.contains(tag65)){
//                    availBal=myBaseContext.substring(myBaseContext.indexOf(tag64)+tag64.length(),myBaseContext.indexOf(tag65))
//                            .substring(10).replace(",",".");
//                }else {
//                    availBal=myBaseContext.substring(myBaseContext.indexOf(tag64)+tag64.length())
//                            .substring(10).replace(",",".");
//                }
//                availBal=amtCheck2(availBal);
//                _baseContent.ClosingAvailBal=availBal;
//                BaseContents.add(_baseContent);
//                //获取明细数据
//                DetailContexts[] result = DealTransDetail942(DetailContext.split(tag61),_accountNumber,_baseContent.cur,_baseContent.date2);
//                for(int i = 0;i<result.length;i++)
//                {
//                    if(result[i] == null || result[i].AccountNumber == null)
//                        break;
//                    list.add(result[i]);
//                    DetailCount++;
//                }
//            }
//        }
//        DetailContexts[] details =  new DetailContexts[list.size()];
//        list.toArray(details);
//        retMap.put(BaseContents,details);
//        return retMap;
//    }
//
//    /**
//     * MT942文件解析
//     * @param FullName
//     * @return
//     * @throws Exception
//     */
//    protected Map<List<BaseContent> ,DetailContexts[]> analysisMT942File(String FullName) throws Exception {
//        //判断文件存不存在，不存在就不处理
//        String context2 = FileHelper.readFileText(FullName,"GBK");
//        if(com.fingard.text.StringHelper.isNullOrEmpty(context2)){
//            WriteBankLogLn("文件解析失败：-------"+FullName);
//            return null;
//        }
//        //开始解析MT942文件
//        List<BaseContent> BaseContents = new ArrayList();
//        List<DetailContexts> list  = new ArrayList<DetailContexts>();
//        Map retMap = new HashMap<List<BaseContent> ,DetailContexts[]>();
//        StringBuilder AllText = new StringBuilder();
//        String[]  SplitArray = new String[] {":28:20", ":28:21", ":28:25", ":28:28", ":28:61", ":28:64", ":28:65", ":28:86"};
//        int DetailCount = 0;
//        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FullName)));
//        String sLine;
//        while((sLine = br.readLine())!=null){
//            if(!StringHelper.isNullOrEmpty(sLine)){
//                //明细分隔符为tagendflag且长度1字节
//                if (sLine.length() > 1 && sLine.contains(SplitFlag)){
//                    sLine = sLine.replace(SplitFlag, "");
//                }
//                if (sLine.length()  > 0 && Contain(SplitArray, SplitFlag)){
//                    sLine += "00";
//                }
//                AllText.append(sLine);
//            }
//        }
//        br.close();
//        String[] AllFileContent = AllText.toString().split(SplitFlag);
//        for(String FileContext : AllFileContent){
//            if(FileContext.length() <= 0){
//                continue;
//            }
//            String SplitTag = tag90C;
//            if (!FileContext.contains(SplitTag)){
//                SplitTag = tag90D;
//            }
//            int start61 = !FileContext.contains(tag61) ? 0 : FileContext.indexOf(tag61) + tag61.length();
//            int length86 = start61 == 0 ? 0 : FileContext.indexOf(SplitTag);
//            String DetailContext = FileContext.substring(start61, length86);//明细信息
//            String myBaseContext = length86 == 0 ? FileContext.replace(tag61, "").replace("'", "''")
//                    : FileContext.replace(DetailContext, "").replace(tag61, "").replace("'", "''");//非明细信息
//            DetailContext = DetailContext.replace("'", "''");
//            //读取文件内容
//            BaseContent _baseContent = new BaseContent();
//            int start_tag20 = myBaseContext.indexOf(tag20)+ tag20.length();
//            String BankUniqueID = myBaseContext.substring(start_tag20,!myBaseContext.contains(tag21) ? myBaseContext.indexOf(tag25):myBaseContext.indexOf(tag21));
//            if(GetBankUniqueID(1,BankUniqueID)){
//                _baseContent.MtFileID = 1;
//                _baseContent.BankUniqueID = BankUniqueID;
//                //tag25
//                String _accountNumber;
//                _accountNumber = splitFileContent(tag25, tag28C, myBaseContext,tag25);
//                _baseContent.AccountNumber = _accountNumber;
//                //tag34F
//                String cur=myBaseContext.substring(myBaseContext.indexOf(tag34F)+tag34F.length(),myBaseContext.indexOf(tag34F)+tag34F.length()+3);
//                //tag13
//                String fileDate=myBaseContext.substring(myBaseContext.indexOf(tag13)+tag13.length(),myBaseContext.indexOf(tag13)+tag13.length()+6);
//                //币种
//                _baseContent.cur=cur;
//                //最后交易日期
//                _baseContent.transDate="20"+fileDate;
//                //用于余额更新判断
//                _baseContent.date2 = myBaseContext.substring(myBaseContext.indexOf(tag13)+tag13.length(),myBaseContext.indexOf(tag13)+tag13.length()+10);
//                //交易金额
//                String money="0";
//                //tag90D or tag 90C
//                int startIndex;
//                int endIndex;
//                if(myBaseContext.contains(tag90D) && myBaseContext.contains(tag90C)){
//                    startIndex=myBaseContext.indexOf(tag90D)+tag90D.length();//开始位置
//                    endIndex=myBaseContext.indexOf(tag90C);//结束位置
//                    //D 支出
//                    String content=myBaseContext.substring(startIndex,endIndex);
//                    startIndex=indexLength(content.replace(",","").trim());
//                    String dMoney=content.substring(startIndex+1).replace(",", ".");
//                    dMoney=amtCheck2(dMoney);
//                    money=new BigDecimal(money).subtract(new BigDecimal(dMoney)).toString();
//                    //C 增加
//                    startIndex=myBaseContext.indexOf(tag90C)+tag90C.length();//开始位置
//                    String content2=myBaseContext.substring(startIndex);
//                    startIndex=indexLength(content2.replace(",","").trim());
//                    String cMoney=content2.substring(startIndex+1).replace(",", ".");
//                    cMoney=amtCheck2(cMoney);
//                    money=new BigDecimal(money).add(new BigDecimal(cMoney)).toString();
//                }else if(myBaseContext.contains(tag90D) && !myBaseContext.contains(tag90C)){
//                    startIndex=myBaseContext.indexOf(tag90D)+tag90D.length();//开始位置
//                    //D 支出
//                    String content=myBaseContext.substring(startIndex);
//                    startIndex=indexLength(content.replace(",","").trim());
//                    String dMoney=content.substring(startIndex+1).replace(",", ".");
//                    dMoney=amtCheck2(dMoney);
//                    money=new BigDecimal(money).subtract(new BigDecimal(dMoney)).toString();
//                }else if(!myBaseContext.contains(tag90D) && myBaseContext.contains(tag90C)){
//                    startIndex=myBaseContext.indexOf(tag90C)+tag90C.length();//开始位置
//                    //C 增加
//                    String content2=myBaseContext.substring(startIndex);
//                    startIndex=indexLength(content2.replace(",","").trim());
//                    String cMoney=content2.substring(startIndex+1).replace(",", ".");
//                    cMoney=amtCheck2(cMoney);
//                    money=new BigDecimal(money).add(new BigDecimal(cMoney)).toString();
//                }
//                _baseContent.payMoney=money;
//                BaseContents.add(_baseContent);
//                //获取明细数据
//                DetailContexts[] result = DealTransDetail942(DetailContext.split(tag61),_accountNumber,cur,fileDate);
//                for(int i = 0;i<result.length;i++)
//                {
//                    if(result[i] == null || result[i].AccountNumber == null)
//                        break;
//                    list.add(result[i]);
//                    DetailCount++;
//                }
//            }
//        }
//        DetailContexts[] details =  new DetailContexts[list.size()];
//        list.toArray(details);
//        retMap.put(BaseContents,details);
//        return retMap;
//    }
//
//    protected String amtCheck2(String amt){
//        if(amt.startsWith(".")){
//            amt = "0"+amt;
//        }
//        if(amt.endsWith(".")){
//            amt = amt+"00";
//        }
//        return amt;
//    }
//
//    //遍历字符串最后一个字母出现的位置
//    protected int indexLength(String str){
//        char[] array = str.toCharArray();
//        int indexLength=0;
//        for (int i = array.length-1; i > 0; i--) {
//            if (array[i] > 'a' && array[i] < 'z' || array[i] > 'A' && array[i] < 'Z') {
//                indexLength=i;
//                break;
//            }
//        }
//        return indexLength;
//    }
//
//    protected boolean GetBankUniqueID(int MtFileID, String p_BankUniqueID)
//    {
//        return  true;
//    }
//
//    protected String splitFileContent(String startTag,String endTag,String fileContent,String replaceTag)
//    {
//        try
//        {
//            if(!fileContent.contains(startTag))
//            {
//                startTag = replaceTag;
//            }
//            int StartIndex = fileContent.indexOf(startTag) + startTag.length();
//            int EndIndex;
//            if(StringHelper.isNullOrEmpty(endTag) || !fileContent.substring(StartIndex).contains(endTag))
//            {
//                EndIndex = fileContent.length();
//            }
//            else
//            {
//                EndIndex = fileContent.indexOf(endTag,StartIndex);
//            }
//            return fileContent.substring(StartIndex,EndIndex);
//        }
//        catch (Exception ex)
//        {
//            WriteBankLogLn("解析MT文件内容出错：" + ex.getMessage());
//            return "";
//        }
//    }
//
//    private boolean Contain(String[] arr,String targetValue)
//    {
//        return Arrays.asList(arr).contains(targetValue);
//    }
//
//    protected boolean DetailContextExist(String AccountNumber,int EachSeqID,String date)
//    {
//        return false;
//    }
//
//    public DetailContexts[] DealTransDetail(String[] DetailContext,String AccountNum)
//    {
//        DetailContexts[] details = new DetailContexts[DetailContext.length + 50];
//        String LastDate = "";
//        int EachSeqID = 0;
//        for(int i = 0;i<DetailContext.length;i++)
//        {
//            DetailContexts p_DetailContext = new DetailContexts();
//            String[] list = DetailContext[i].split(tag86);
//            String[] reverseList = list.clone();
//            for(int j = 0;j<list.length;j++)
//            {
//                reverseList[j] = list[list.length - j - 1];
//            }
//            list = reverseList.clone();
//            if(list.length == 2)
//            {
//                String str61 = list[1];
//                String str86 = list[0];
//
//                p_DetailContext.MtFileID = 1;
//                p_DetailContext.AccountNumber = AccountNum;
//
//                if(!StringHelper.isNullOrEmpty(str61))
//                {
//                    String datetstr = "20" + str61.substring(0,6);
//                    Date d = new Date(new Date().getTime()-24*60*60*1000);  //交易时间改成昨日
//                    String date = "";
//                    String judge = Format.Date8Format.format(d);    //转换 yyyyMMdd模式
//                    if(myDate.contains(judge) || myDate.contains("MTFILE")){
//                        date = Format.Date10Format.format(d);
//                    }
//                    if(!date.equals(LastDate))
//                    {
//                        LastDate = date;
//                        EachSeqID  = 1;
//                    }
//                    else
//                    {
//                        EachSeqID++;
//                    }
//                    p_DetailContext.TranDate = date;
//                    p_DetailContext.TranTime = Format.Date10Format.format(d);
//                    if (DetailContextExist("", EachSeqID, date))
//                    {
//                        continue;
//                    }
//                    p_DetailContext.SeqID = EachSeqID;
//
//                    int datelength = 10;
//                    String amt = str61.substring(datelength,str61.length() - datelength + 1);
//
//                    String mark =amt.substring(0, 1);
//                    if(mark.equals("R")){
//                        mark = amt.substring(0, 2);
//                    }
//                    if(mark.length() == 1) {
//                        if (mark.equals("D")) {
//                            p_DetailContext.CDFlag = "1";
//                        }else if (mark.equals("C")) {
//                            p_DetailContext.CDFlag = "2";
//                        }
//                        amt = amt.substring(1,amt.length());
//                    }else if(mark.length() == 2) {
//                        if (mark.equals("RD")) {
//                            p_DetailContext.CDFlag = "2";
//                        } else if (mark.equals("RC")) {
//                            p_DetailContext.CDFlag = "1";
//                        }
//                        amt = amt.substring(2,amt.length());
//                    }
//                    String flag = amt.substring(0,1);
//                    amt = amt.substring(1,amt.length());
//
//                    String amount = "0.00";
//                    amt = amt.replace(",",".");
//                    if(amt.contains("."))
//                    {
//                        int sublength = 3;//小数点及后两位长度为3
//                        int tmpdecimallength = amt.indexOf(".");
//                        String tmpdecimalInt = amt.substring(tmpdecimallength ,tmpdecimallength + 3);
//                        int outInt = 0;
//                        if (tmpdecimalInt.charAt(2) < '0' || tmpdecimalInt.charAt(2) > '9'|| tmpdecimalInt.charAt(1) < '0' || tmpdecimalInt.charAt(1) > '9') //判断是否可以转换为整型
//                        {
//                            sublength = 1;
//                        }
//                        amount = amt.substring(0,amt.indexOf(".") + sublength);
//                    }
//                    p_DetailContext.TransAmt = amount;
//
//                    int indexOfAbstr =  amt.indexOf("//") + "//".length();
//                    p_DetailContext.Abstr = amt.substring(indexOfAbstr ,indexOfAbstr + amt.substring(indexOfAbstr).indexOf('/'));
//
//                    if(!StringHelper.isNullOrEmpty(str86))
//                    {
//                        str86 = str86.substring(1,str86.length());
//                        String[] str86Array  = str86.split("/");
//                        //String AB = "AB";//受益方银行
//                        //String AB1 = "AB1";//受益方银行
//                        //String OB = "OB";//C受益方银行
//                        //String OB1 = "OB1";//C受益方银行
//                        String BE = "BE";//D的受益方
//                        String BEN = "BEN";//D的受益方
//                        String BN = "BN";//D的受益方
//                        String BI = "BI";//D的受益方账户
//                        String BO = "BO";//C受益方姓名or帐号
//                        String BO1 = "BO1";//C受益方姓名
//                        String PY = "PY";//用途
//                        if("1".equals(p_DetailContext.CDFlag)){
//                            /*//受益人银行名称
//                            if(Contain(str86Array,AB1)){
//                                int index_AB1 =  Arrays.asList(str86Array).indexOf(AB1);
//                                if (index_AB1 + 1 <= str86Array.length)
//                                    p_DetailContext.RecAccBannk = str86Array[index_AB1 + 1];
//                            }else {
//                                if(Contain(str86Array,AB)){
//                                    int index_AB =  Arrays.asList(str86Array).indexOf(AB);
//                                    if (index_AB + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccBannk = str86Array[index_AB + 1];
//                                }
//                            }*/
//                            //受益人名称
//                            if(Contain(str86Array,BE)){
//                                if(Contain(str86Array,BEN)){
//                                    int index_BE =  Arrays.asList(str86Array).indexOf(BE);
//                                    if (index_BE + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName = str86Array[index_BE + 1];
//                                    int index_BEN =  Arrays.asList(str86Array).indexOf(BEN);
//                                    if (index_BEN + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName =new StringBuffer(p_DetailContext.RecAccName).append(" ").append(str86Array[index_BEN + 1]).toString();
//                                }else {
//                                    int index_BE =  Arrays.asList(str86Array).indexOf(BE);
//                                    if (index_BE + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName = str86Array[index_BE + 1];
//                                }
//                            }else if(Contain(str86Array,BN)){
//                                int index_BN =  Arrays.asList(str86Array).indexOf(BN);
//                                if (index_BN + 1 <= str86Array.length)
//                                    p_DetailContext.RecAccName = str86Array[index_BN + 1];
//                            }
//                            //受益人帐号
//                            if(Contain(str86Array,BI)){
//                                int index_BI =  Arrays.asList(str86Array).indexOf(BI);
//                                if (index_BI + 1 <= str86Array.length)
//                                    p_DetailContext.RecAccNum = str86Array[index_BI + 1];
//                            }
//                        } else if("2".equals(p_DetailContext.CDFlag)){
//                            /*//受益人银行名称
//                            if(Contain(str86Array,OB1)){
//                                int index_OB1 =  Arrays.asList(str86Array).indexOf(OB1);
//                                if (index_OB1 + 1 <= str86Array.length)
//                                    p_DetailContext.RecAccBannk = str86Array[index_OB1 + 1];
//                            }else {
//                                if(Contain(str86Array,OB)){
//                                    int index_OB =  Arrays.asList(str86Array).indexOf(OB);
//                                    if (index_OB + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccBannk = str86Array[index_OB + 1];
//                                }
//                            }*/
//                            if(Contain(str86Array,BO1)){
//                                //受益人名称
//                                int index_BO1 =  Arrays.asList(str86Array).indexOf(BO1);
//                                if (index_BO1 + 1 <= str86Array.length)
//                                    p_DetailContext.RecAccName = str86Array[index_BO1 + 1];
//                                //受益人帐号
//                                if(Contain(str86Array,BO)){
//                                    int index_BO =  Arrays.asList(str86Array).indexOf(BO);
//                                    if (index_BO + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccNum = str86Array[index_BO + 1];
//                                }
//                            }else {
//                                //受益人名称
//                                if(Contain(str86Array,BO)){
//                                    int index_BO =  Arrays.asList(str86Array).indexOf(BO);
//                                    if (index_BO + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName = str86Array[index_BO + 1];
//                                }
//                            }
//                        }
//                        if(Contain(str86Array,PY))
//                        {
//                            int index_PY =  Arrays.asList(str86Array).indexOf(PY);
//                            if (index_PY + 1 <= str86Array.length)
//                                p_DetailContext.Usage = str86Array[index_PY + 1];
//                        }
//                    }
//                }
//            }
//            details[i] = p_DetailContext;
//        }
//        return details;
//    }
//
//    /**
//     * MT942 61 86字段数据处理
//     * @param DetailContext
//     * @param AccountNum
//     * @return
//     */
//    public DetailContexts[] DealTransDetail942(String[] DetailContext,String AccountNum,String cur,String fileDate) throws Exception{
//        DetailContexts[] details = new DetailContexts[DetailContext.length + 50];
//        try{
//            int EachSeqID = 1;
//            for(int i = 0;i<DetailContext.length;i++){
//                DetailContexts p_DetailContext = new DetailContexts();
//                String[] list = DetailContext[i].split(tag86);
//                String[] reverseList = list.clone();
//                for(int j = 0;j<list.length;j++) {
//                    reverseList[j] = list[list.length - j - 1];
//                }
//                list = reverseList.clone();
//                if(list.length == 2) {
//                    String str61 = list[1];
//                    String str86 = list[0];
//
//                    p_DetailContext.MtFileID = 1;
//                    p_DetailContext.AccountNumber = AccountNum;
//                    p_DetailContext.cur = cur;
//                    p_DetailContext.fileDate="20"+fileDate;
//                    //61
//                    if(!StringHelper.isNullOrEmpty(str61)){
//                        //起息日期
//                        String date = "20" + str61.substring(0,6);
//                        p_DetailContext.valueDate = Format.Date10Format.format(Format.Date8Format.parse(date));
//                        //交易日期
//                        String date3 = "20" + str61.substring(0,2)+str61.substring(6,10);
//                        p_DetailContext.TranDate = Format.Date10Format.format(Format.Date8Format.parse(date3));
//                        //交易时间
//                        p_DetailContext.TranTime = p_DetailContext.TranDate+" "+"00:00:00";
//                        p_DetailContext.SeqID = EachSeqID;
//                        //借贷标识
//                        String mark =str61.substring(10,11);
//                        int index=11;//起始位置
//                        if(mark.equals("R")){
//                            mark = str61.substring(10,12);
//                            index=index+1;
//                        }
//                        if("RD".equals(mark) || "C".equals(mark)){//贷
//                            p_DetailContext.CDFlag = "2";
//                        }else if("RC".equals(mark) || "D".equals(mark)){//借
//                            p_DetailContext.CDFlag = "1";
//                        }else {
//                            throw new Exception("借贷标识异常。请查看文件");
//                        }
//                        int end=str61.indexOf("N",index);
//                        //交易金额
//                        String amount = str61.substring(index+1,end).replaceAll(",",".");
//                        amount=amtCheck(amount);
//                        p_DetailContext.TransAmt = amount;
//                        //付款请求流水号
//                        p_DetailContext.seqNo=str61.substring(str61.indexOf(",")+7,str61.indexOf("//"));
//                        //流水号
//                        index =  str61.indexOf("//") + "//".length();
//                        p_DetailContext.Abstr = str61.substring(index ,str61.indexOf('/',index));
//                        //说明
//                        String bai=str61.substring(str61.indexOf("BAI"));
//                        String[] baiArray=bai.split("/");
//                        if(baiArray.length==3){
//                            p_DetailContext.billType=baiArray[2];
//                        }
//                        //86
//                        if(!StringHelper.isNullOrEmpty(str86)){
//                            str86 = str86.substring(1);
//                            String[] str86Array  = str86.split("/");
//                            String AB = "AB";//D受益方银行
//                            String AB1 = "AB1";//D受益方银行
//                            String OB = "OB";//C受益方银行
//                            String OB1 = "OB1";//C受益方银行
//                            String BE = "BE";//D的受益方
//                            String BEN = "BEN";//D的受益方
//                            String BN = "BN";//D的受益方
//                            String BI = "BI";//D的受益方账户
//                            String BO = "BO";//C受益方姓名or帐号
//                            String BO1 = "BO1";//C受益方姓名
//                            String PY = "PY";//用途
//                            if("1".equals(p_DetailContext.CDFlag)){
//                                //受益人银行名称
//                                if(Contain(str86Array,AB1)){
//                                    int index_AB1 =  Arrays.asList(str86Array).indexOf(AB1);
//                                    if (index_AB1 + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccBannk = str86Array[index_AB1 + 1];
//                                }else {
//                                    if(Contain(str86Array,AB)){
//                                        int index_AB =  Arrays.asList(str86Array).indexOf(AB);
//                                        if (index_AB + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccBannk = str86Array[index_AB + 1];
//                                    }
//                                }
//                                //受益人名称
//                                if(Contain(str86Array,BE)){
//                                    if(Contain(str86Array,BEN)){
//                                        int index_BE =  Arrays.asList(str86Array).indexOf(BE);
//                                        if (index_BE + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccName = str86Array[index_BE + 1];
//                                        int index_BEN =  Arrays.asList(str86Array).indexOf(BEN);
//                                        if (index_BEN + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccName =new StringBuffer(p_DetailContext.RecAccName).append(" ").append(str86Array[index_BEN + 1]).toString();
//                                    }else {
//                                        int index_BE =  Arrays.asList(str86Array).indexOf(BE);
//                                        if (index_BE + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccName = str86Array[index_BE + 1];
//                                    }
//                                }else if(Contain(str86Array,BN)){
//                                    int index_BN =  Arrays.asList(str86Array).indexOf(BN);
//                                    if (index_BN + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName = str86Array[index_BN + 1];
//                                }
//                                //受益人帐号
//                                if(Contain(str86Array,BI)){
//                                    int index_BI =  Arrays.asList(str86Array).indexOf(BI);
//                                    if (index_BI + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccNum = str86Array[index_BI + 1];
//                                }
//                            } else if("2".equals(p_DetailContext.CDFlag)){
//                                //受益人银行名称
//                                if(Contain(str86Array,OB1)){
//                                    int index_OB1 =  Arrays.asList(str86Array).indexOf(OB1);
//                                    if (index_OB1 + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccBannk = str86Array[index_OB1 + 1];
//                                }else {
//                                    if(Contain(str86Array,OB)){
//                                        int index_OB =  Arrays.asList(str86Array).indexOf(OB);
//                                        if (index_OB + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccBannk = str86Array[index_OB + 1];
//                                    }
//                                }
//                                if(Contain(str86Array,BO1)){
//                                    //受益人名称
//                                    int index_BO1 =  Arrays.asList(str86Array).indexOf(BO1);
//                                    if (index_BO1 + 1 <= str86Array.length)
//                                        p_DetailContext.RecAccName = str86Array[index_BO1 + 1];
//                                    //受益人帐号
//                                    if(Contain(str86Array,BO)){
//                                        int index_BO =  Arrays.asList(str86Array).indexOf(BO);
//                                        if (index_BO + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccNum = str86Array[index_BO + 1];
//                                    }
//                                }else {
//                                    //受益人名称
//                                    if(Contain(str86Array,BO)){
//                                        int index_BO =  Arrays.asList(str86Array).indexOf(BO);
//                                        if (index_BO + 1 <= str86Array.length)
//                                            p_DetailContext.RecAccName = str86Array[index_BO + 1];
//                                    }
//                                }
//                            }
//                            if(Contain(str86Array,PY)){
//                                int index_PY =  Arrays.asList(str86Array).indexOf(PY);
//                                if (index_PY + 1 <= str86Array.length)
//                                    p_DetailContext.Usage = str86Array[index_PY + 1];
//                            }
//                        }
//                    }
//                }
//                details[i] = p_DetailContext;
//            }
//        }catch (Exception e){
//            WriteBankLogLn("解析文件"+DetailContext+"异常："+e);
//        }
//        return details;
//    }
//
//    private String amtCheck(String amt) throws Exception{
//        if(amt.startsWith(".")){
//            amt = "0"+amt;
//        }
//        if(amt.endsWith(".")){
//            amt = amt+"00";
//        }
//        return amt;
//    }
//
//    protected boolean DealFiles(String p_FileName) throws Exception
//    {
//        IsDealedFilePath = trimEndFileSp(IsDealedFilePath);
//        if(!existFile(IsDealedFilePath))
//        {
//            mkdir(IsDealedFilePath);
//        }
//        String isDealedFileContent = readFileText(IsDealedFilePath, "ascii");
//        try {
//            String[] records = isDealedFileContent.split("-");
//
//            for (String record : records) {
//                //ID|FileName|IsDealed
//                int FileNameStart = record.indexOf("|") + 1;
//                int FileNameEnd = record.lastIndexOf("|") - 1;
//                String FileName = record.substring(FileNameStart, FileNameEnd);
//                if (FileName.equals(p_FileName)) {
//                    return true;
//                }
//            }
//        }
//        catch (Exception ex){
//            WriteBankLogLn("分割记录出错："+ex.getMessage());
//            return false;
//        }
//        return false;
//    }
//
//    public String downloadFile() throws Exception
//    {
//        String unhandledFileNames = "";
//        String localAddress = getBankConfig().getValueAsString("ReceiveFilePath");
//        System.out.println("开始执行下载任务。。。。");
//        Map<String, Object> jschMap = getChannel();
//        ChannelSftp channel = (ChannelSftp) jschMap.get("channel");
//        String Home = channel.getHome();
//        Vector<ChannelSftp.LsEntry> f = channel.ls(Home);
//        System.out.println("SFTP上文件个数为"+f.size());
//        File localCatalog = new File(localAddress);
//        for(int i = 0 ;i<f.size();i++)
//        {
//            String fileName = f.get(i).getFilename();
//            System.out.println("下载的文件名称为：" + fileName);
//
//            //只接收 文件接收|文件处理|MT文件 三类文件
//            if( fileName.contains("FILEACK") || fileName.contains("POSACK")|| fileName.contains("MT")){
//                unhandledFileNames +=  fileName + "|";
//            }
//            if(!existFile(localCatalog + File.separator + fileName))
//            {
//                channel.get( fileName,localAddress);//下载
//                System.out.println("下载的文件的地址为：" + localAddress);
//            }
//        }
//        closeChannel((Session) jschMap.get("session"), (ChannelSftp) jschMap.get("channel"));
//        return unhandledFileNames;
//    }
//
//    protected String[] sendToBankForStatus(String repStr,String askNumber) throws Exception{
//        String token = getToken();
//        String[] retStr = new String[]{"",""};
//        String clentId = bankFront.keyID;
//        String url = bankFront.getUrl("1944") + "client_id=d390fa31-3254-4b5b-9991-ff7d610633f7";
//        WriteBankLogLn("2.提交银行的地址："+url);
//        //String tmpToWrite = HttpHelper.encryptionXML(reqStr);
//        //发送银行前置
//
//      //  String str = base64toStr(repStr);
//            //    Base64.encodeBase64String((repStr).getBytes()).replaceAll("(\\r|\\n)", "");
//
//        String sendXml = HttpHelper.encryptionXML(repStr);
//        //String[] responeseXMLs = HttpClient.post(sendXml.getBytes(),url,token,sendXml.length()+"");
//        String responseXML = HttpHelper.get(sendXml,url,token);
//       // String responseXML = HttpHelper.get(str,url,token);
//
//        retStr[1] = HttpHelper.decryptionXML(responseXML);
//        WriteBankLogStep3(retStr[1]);
//        return retStr;
//    }
//
//    protected int checkStatus(String code){
//        String accept = "PDNG,ACTC,PDNG,PDNG,PDNG,ACCP,PDNG,ACTC,ACCP,ACTC,ACTC,ACTC,ACCP";
//        String fail = "RJCT,RJCT,RJCT,RJCT,RJCT,RJCT,RJCT,RJCT,RJCT,RJCT,RJCT";
//        String success = "ACSP,ACSP";
//        if(accept.contains(code)){
//            return 1;
//        }else if(fail.contains(code)){
//            return 2;
//        }else if(success.contains(code)){
//            return 3;
//        }else{
//            return 0;
//        }
//    }
//
//    protected String[] sendToBank(String p_reqStr,String tmpUrl) throws Exception{
//        String token = getToken();
//        String[] retStr = new String[]{"",""};
//        String clentId = bankFront.keyID;
//        String url = bankFront.getUrl(tmpUrl)+clentId;//"8aced9e3-4b06-4b89-b9b5-a210917cd193";
//
//        WriteBankLogLn("2.提交银行的地址："+url);
//        String charsetName = getCharset();
//
//        //发送银行前置
//        //加密
//        WriteBankLogLn("发送给银行的报文："+p_reqStr);
//        //进行base64加密
//        p_reqStr = base64toStr(p_reqStr);
//        String sendXml = HttpHelper.encryptionXML(p_reqStr);
//        //String[] responeseXMLs = HttpClient.post(sendXml.getBytes(),url,token,sendXml.length()+"");
//        ClientResponse clientResponse = HttpHelper.post(sendXml,url,token);
//        String responseXML = clientResponse.getEntity(String.class);
//        WriteBankLogLn("银行返回的报文头部信息"+ JSON.toJSONString(clientResponse.getHeaders()));
//       /* WebRequest tmpWebRequest = new WebRequest(url);
//        tmpWebRequest.setConnectTimeout(60000);
//        tmpWebRequest.setRequestProperty("Accept-Encoding", "gzip,deflate");
//        tmpWebRequest.setRequestProperty("Content-Type", "application/xml");
//        if(tmpUrl.equals("1908")){
//            tmpWebRequest.setRequestProperty("payloadType", "urn:iso:std:iso:20022:tech:xsd:pain.001.001.03");
//        }
//        tmpWebRequest.setRequestProperty("Authorization", token);
//        tmpWebRequest.setRequestProperty("Content-Length", tmpToWriteBytes.length+"");
//        tmpWebRequest.setRequestProperty("Host", "tts.sandbox.apib2b.citi.com");
//        tmpWebRequest.setRequestProperty("Connection", "Keep-Alive");
//        tmpWebRequest.setRequestProperty("User-Agent", "Apache-HttpClient/4.1.1");
//        retStr = tmpWebRequest.upload(tmpToWriteBytes, charsetName);
//        */
//       try{
//           retStr[1] = HttpHelper.decryptionXML(responseXML);
//
//       }catch (Exception e){
//           e.printStackTrace();
//           WriteBankLogLn(e);
//       }
//        WriteBankLogStep3(retStr[1]);
//        return retStr;
//    }
//
//    protected String getToken() throws Exception{
//        String[] retStr = new String[]{"",""};
//        XmlTextWriter xmlWriter = new XmlTextWriter();
//        xmlWriter.writeStartDocByDeclaration("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
//        xmlWriter.writeElementAttribute("oAuthToken", "xmlns", "http://com.citi.citiconnect/services/types/oauthtoken/v1");
//        xmlWriter.writeElementString("grantType","client_credentials");
//        xmlWriter.writeElementString("scope","/authenticationservices/v1");
//        xmlWriter.writeElementString("sourceApplication","CCF");
//        xmlWriter.writeEndDocument();
//    //    String sign = bankFront.keyID + ":" + getBankConfig().getValueAsString("keySecret");//私钥
//     //   String charsetName = "UTF-8";
//        String tmpToWrite = HttpHelper.encryptionXML(xmlWriter.toXmlString());
//        //Base64加密
//    //    final byte[] textByte = sign.getBytes(charsetName);
//   //     String authorization = Base64.encodeBase64String(textByte);
//  //      Pattern p = Pattern.compile("\\s*|\t|\r|\n");
//  //      Matcher m = p.matcher(authorization);
//        String reqUrl = bankFront.getUrl("tokenUrl");
//        retStr[1] = HttpHelper.authentication(tmpToWrite,reqUrl);
//        WriteBankLogStep2(retStr[1]);
//        //retStr = client.post(tmpToWriteBytes,tokenUrl,authorization,tmpToWriteBytes.length+"");
//        //解密
//        String response = HttpHelper.decryptionXML(retStr[1]);
//
//
//        /**
//        WebRequest tmpWebRequest = new WebRequest(tokenUrl);
//        tmpWebRequest.setConnectTimeout(60000);
//        tmpWebRequest.setRequestProperty("Accept-Encoding", "gzip,deflate");
//        tmpWebRequest.setRequestProperty("Content-Type", "application/xml");
//        tmpWebRequest.setRequestProperty("Authorization", authorization);
//        tmpWebRequest.setRequestProperty("Content-Length", tmpToWriteBytes.length+"");
//        tmpWebRequest.setRequestProperty("Host", "tts.sandbox.apib2b.citi.com");
//        tmpWebRequest.setRequestProperty("Connection", "Keep-Alive");
//        tmpWebRequest.setRequestProperty("User-Agent", "Apache-HttpClient/4.1.1");
//        System.setProperty("https.protocols", "TLSv1.2");
//        retStr = tmpWebRequest.upload(tmpToWriteBytes, charsetName);
//         */
//        WriteBankLogStep3(response);
//        return response;
//    }
//
//    public String iosDate(String time){
//        String iosDate = "";
//        if(StringHelper.isNullOrEmpty(time)){
//            return iosDate;
//        } else if(time.length()==8){
//            iosDate = time.substring(0,4) + "-" + time.substring(5,6) + "-" + time.substring(7,8) + "T" + "00:00:00";
//            return iosDate;
//        } else{
//            return iosDate;
//        }
//    }
//
//    public void handleNewFile(String unhandledFileNames) throws Exception {
//        String IsDealedFilePath = trimEndFileSp(getBankConfig().getValueAsString("DealedPath"));
//        String MTFilePath = getBankConfig().getValueAsString("MTPath");
//        String[] fileNames = unhandledFileNames.split("\\|");
//        for(String name : fileNames){
//            if(name.toUpperCase().contains("ACK")){
//                String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//                WriteBankLogLn("处理前文件位置："+oldFilePath);
//                WriteBankLogLn("开始处理ACK文件，文件名为：" + name);
//                BaseContent _baseContent = new BaseContent();
//                String[] result = analysisAckFile(name,_baseContent,oldFilePath);
//                if(result!=null && result.length>=3){
//                    String MsgId = result[0];
//
//                    String Status = result[1];
//
//                    String fileType=result.length==4?result[3]:result[2];
//
//                    String resultInfo=result.length==4?result[2]:"";
//
//                    Date d = new Date();
//                    String date = Format.Date8Format.format(d);
//                /*
//                * 写入对应日期下，文件名为SEQ_ACK供1944查询
//                * */
//                    if(!existFile(IsDealedFilePath + File.separator + date + File.separator + MsgId)){
//                        StringBuilder fileContent = new StringBuilder().append(MsgId).append("|").append(Status);
//                        if(!StringHelper.isNullOrEmpty(resultInfo)){
//                            fileContent.append("|").append(resultInfo);
//                        }
//                        String dealedFilePath =  IsDealedFilePath + File.separator +date + "//" + MsgId + "_" + Status+"_"+fileType;
//                        writeFile(dealedFilePath,fileContent.toString(),"utf-8");
//                        WriteBankLogLn("写入文件位置：" + dealedFilePath);
//                    }
//                    WriteBankLogLn("完成ACK文件处理");
//                    renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("SuccessPath")) + File.separator + name);
//                }else {
//                    if(name.contains("MEIXIXI")){
//                        WriteBankLogLn("ACK文件处理成功");
//                        renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("ACKFilePath")) + File.separator + name);
//                    }else {
//                        WriteBankLogLn("ACK文件处理失败");
//
//                        renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("ExceptionPath")) + File.separator + name);
//                    }
//                }
//            }else if(name.toUpperCase().contains("MT940")){
//                WriteBankLogLn("开始处理MT940文件");
//                String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//                //解析MT940文件
//                Map<List<BaseContent> ,DetailContexts[]> listMap=analysisMT940File(oldFilePath);
//                //将数据写入文件
//                List<BaseContent> contents = null;
//                for(List<BaseContent> key : listMap.keySet()){
//                    contents = key;
//                }
//                //开始解析余额数据
//                if(contents.size()>0){
//                    for(BaseContent baseContent:contents){
//                        StringBuilder balanceContent=new StringBuilder();
//                        //账号|币种|期终余额|可用余额|期初余额
//                        String dealedPath=trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                                + File.separator + ("20"+baseContent.date2)+File.separator+baseContent.AccountNumber+"_7505.txt";
//                        balanceContent.append(baseContent.AccountNumber + "|").append(baseContent.cur + "|").append(baseContent.MidClosingBal + "|")
//                                .append(baseContent.ClosingAvailBal + "|").append(baseContent.MidOpeningBal);
//                        FileHelper.writeFile(dealedPath, balanceContent.toString(), getCharset());
//                        WriteBankLogLn2("写入文件：" + dealedPath + ",文件内容 \r\n" + balanceContent.toString());
//                    }
//                }
//                //开始解析明细数据
//                DetailContexts[] AllDetail =  listMap.get(contents);
//                if(AllDetail.length>0){
//                    for(DetailContexts i : AllDetail){
//                        //获取明细信息
//                        ankMT940Details(i);
//                    }
//                }
//                WriteBankLogLn("MT940文件处理完成");
//                renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("SuccessPath")) + File.separator + name);
//                /*WriteBankLogLn("开始处理MT文件");
//                String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//                //设置时间
//                Calendar calendar = Calendar.getInstance();
//                Calendar calendar2= Calendar.getInstance();
//                calendar2.setTime(Format.Date8Format.parse(Format.Date8Format.format(new Date())));
//                //解析文档，获取日期
//                Map<List<BaseContent>,DetailContexts[]> myMap = analysisMTFile(oldFilePath);
//                List<BaseContent> contents3 = null;
//                for(List<BaseContent> key : myMap.keySet()){
//                    contents3 = key;
//                }
//                for(BaseContent baseContent:contents3) {
//                    if(!"".equals(baseContent.FinalDate) && baseContent.FinalDate!=null) {
//                        calendar.setTime(Format.Date8Format.parse("20"+baseContent.FinalDate));
//                        int oldDay=Integer.parseInt(Format.Date8Format.format(calendar.getTime()));
//                        int toDay=Integer.parseInt(Format.Date8Format.format(calendar2.getTime()));
//                        //统一将MT940文件设为t+1处理
//                        if(oldDay<toDay){
//                            calendar.add(Calendar.DAY_OF_MONTH,+1);
//                        }
//                        break;
//                    }
//                }
//                //Date d = new Date();
//                //String date = Format.Date8Format.format(d);
//                String newPathParent  = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                        + File.separator + Format.Date8Format.format(calendar.getTime());
//                String newFilePath = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                        + File.separator + Format.Date8Format.format(calendar.getTime()) + File.separator+"MTFILE";
//                if(!existFile(newPathParent)) {
//                    mkdir(newPathParent);
//                }
//                WriteBankLogLn("解析后文件位置 ：" + newFilePath);
//                //File newFile  = new File(newFilePath);
//                //File oldFile = new File(oldFilePath);
//                //获取文件内容
//                String fileContent = FtpUtil.getTextFromFile(oldFilePath, getCharset());
//                FileHelper.appendFile(newFilePath,fileContent.toString(),getCharset());
//                //writeFile(newFilePath,readToString(oldFile,"GBK"),"GBK");
//                WriteBankLogLn("MT文件处理完成");
//                renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("SuccessPath")) + File.separator + name);*/
//            }else if(name.toUpperCase().contains("MT942")){
//                WriteBankLogLn("开始处理MT942文件");
//                String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//                //解析MT942文件
//                Map<List<BaseContent> ,DetailContexts[]> listMap=analysisMT942File(oldFilePath);
//                //将数据写入文件
//                List<BaseContent> contents = null;
//                for(List<BaseContent> key : listMap.keySet()){
//                    contents = key;
//                }
//                //开始解析余额数据
//                if(contents.size()>0){
//                    for(BaseContent baseContent:contents){
//                        String openBal="";//期初余额
//                        String availBal="";//可用余额
//                        String closeBal="";//当前余额
//                        StringBuilder balanceContent=new StringBuilder();
//                        // 余额结果：账号|币种|当前余额|可用余额|期初余额|最后交易日期|文件生成时间|期初余额对应的日期
//                        String dealedPath=trimEndFileSp(getBankConfig().getValueAsString("MT942Path"))
//                                + File.separator + baseContent.transDate+File.separator+baseContent.AccountNumber+"_7506.txt";
//                        if (FileHelper.existFile(dealedPath)) {
//                            WriteBankLogLn2("文件：" + dealedPath + "已存在，开始对已存在文件进行处理");
//                            String hisContent = FileHelper.readFileText(dealedPath, getCharset());
//                            String[] hisBal = hisContent.split("\\|");
//                            if (Double.valueOf(hisBal[hisBal.length - 2]) < Double.valueOf(baseContent.date2)) {
//                                WriteBankLogLn2("收到一个后生成的文件，除了期初余额和期初余额对应日期，与他都更新");
//                                //收到一个后生成的文件，除了期初余额和期初余额对应日期，与他都更新
//                                //当前余额=当前余额+交易金额
//                                closeBal=new BigDecimal(hisBal[3]).add(new BigDecimal(baseContent.payMoney)).toString();
//                                //可用余额=当前余额
//                                availBal=closeBal;
//                                balanceContent.append(baseContent.AccountNumber + "|").append(baseContent.cur + "|").append(closeBal + "|").append(availBal + "|")
//                                        .append(hisBal[4] + "|").append(baseContent.transDate + "|").append(baseContent.date2 + "|").append(hisBal[7]);
//                                FileHelper.writeFile(dealedPath, balanceContent.toString(), getCharset());
//                                WriteBankLogLn2("更新文件：" + dealedPath + ",文件内容 \r\n" + balanceContent.toString());
//                            } else {
//                                WriteBankLogLn2("收到一个先生成的文件，不需要判断期初余额是否更新");
//                            }
//                        } else {
//                            //设置时间
//                            Calendar calendar = Calendar.getInstance();
//                            calendar.setTime(Format.Date8Format.parse(baseContent.transDate));
//                            //calendar.add(Calendar.DAY_OF_MONTH,-1);
//                            //当前日终解析文件
//                            String m940FilePath=trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                                    + File.separator + Format.Date8Format.format(calendar.getTime()) + File.separator+baseContent.AccountNumber+"_7505.txt";
//                            /*//===============为了兼容更换新解析方法的第一天余额的取值=========
//                            //设置时间
//                            Calendar calendar2 = Calendar.getInstance();
//                            calendar2.setTime(Format.Date8Format.parse(baseContent.transDate));
//                            calendar2.add(Calendar.DAY_OF_MONTH,-1);
//                            //原逻辑MTFILE文件
//                            String mtFilePath=trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                                    + File.separator + Format.Date8Format.format(calendar2.getTime()) + File.separator+"MTFILE";
//                            if(FileHelper.existFile(mtFilePath)){
//                                Map<List<BaseContent>,DetailContexts[]> myMap = analysisMT940File(mtFilePath);
//                                List<BaseContent> contents2 = null;
//                                for(List<BaseContent> key : myMap.keySet()) {
//                                    contents2 = key;
//                                }
//                                for(BaseContent baseContent1:contents2){
//                                    if(baseContent1.AccountNumber.equals(baseContent.AccountNumber)) {
//                                        openBal=baseContent1.ClosingAvailBal;//期初余额=前一天期末余额
//                                        break;
//                                    }
//                                }
//                                if(StringHelper.isNullOrEmpty(openBal)){//期初余额不存在，说明是新增账户
//                                    //当前余额
//                                    closeBal="0.00";
//                                    openBal="0.00";
//                                }else {
//                                    //当前余额=期初余额+交易金额
//                                    closeBal=new BigDecimal(openBal).add(new BigDecimal(baseContent.payMoney)).toString();
//                                }
//                                //可用余额=当前余额
//                                availBal=closeBal;
//                                balanceContent.append(baseContent.AccountNumber + "|").append(baseContent.cur + "|").append(closeBal + "|").append(availBal + "|")
//                                        .append(openBal + "|").append(baseContent.transDate + "|").append(baseContent.date2 + "|" + baseContent.date2);
//                                FileHelper.writeFile(dealedPath, balanceContent.toString(), getCharset());
//                                WriteBankLogLn2("写入文件：" + dealedPath + ",文件内容 \r\n" + balanceContent.toString());
//                            }
//                            //===============为了兼容更换新解析方法的第一天余额的取值=========*/
//
//                            //日间明细未生成余额信息，获取前一天(节假日继续往前遍历)日终余额为期初余额
//                            int num =0;
//                            while(!FileHelper.existFile(m940FilePath)&&num<10){
//                                calendar.add(Calendar.DAY_OF_MONTH,-1);
//                                m940FilePath = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))
//                                        + File.separator + Format.Date8Format.format(calendar.getTime()) + File.separator+baseContent.AccountNumber+"_7505.txt";
//                                num++;
//                                WriteBankLogLn("账户"+baseContent.AccountNumber+"在"+calendar+"日期的MT940文件不存在,继续往前一天遍历，第"+num+"次");
//                            }
//                            if(FileHelper.existFile(m940FilePath)) {
//                                //读取文件内容
//                                String balanceContent2 = FileHelper.readFileText(m940FilePath,getCharset());
//                                if(com.fingard.text.StringHelper.hasAnyChar(balanceContent2)){
//                                    String[] bal  =balanceContent2.split("\\|");
//                                    openBal=bal[2];
//                                }
//                                if(StringHelper.isNullOrEmpty(openBal)){//期初余额不存在
//                                    openBal="0.00";
//                                    //当前余额=交易金额
//                                    closeBal=new BigDecimal(openBal).add(new BigDecimal(baseContent.payMoney)).toString();
//                                }else {
//                                    //当前余额=期初余额+交易金额
//                                    closeBal=new BigDecimal(openBal).add(new BigDecimal(baseContent.payMoney)).toString();
//                                }
//                                //可用余额=当前余额
//                                availBal=closeBal;
//                                balanceContent.append(baseContent.AccountNumber + "|").append(baseContent.cur + "|").append(closeBal + "|").append(availBal + "|")
//                                        .append(openBal + "|").append(baseContent.transDate + "|").append(baseContent.date2 + "|" + baseContent.date2);
//                                FileHelper.writeFile(dealedPath, balanceContent.toString(), getCharset());
//                                WriteBankLogLn2("写入文件：" + dealedPath + ",文件内容 \r\n" + balanceContent.toString());
//                            }else {//说明此账户无MT940文件生成，即为新增账户
//                                //closeBal="0.00";//新增账户第一天余额未返回
//                                openBal="0.00";//新增账户第一天余额未返回
//                                closeBal=new BigDecimal(openBal).add(new BigDecimal(baseContent.payMoney)).toString();
//                                //可用余额=当前余额
//                                availBal=closeBal;
//                                balanceContent.append(baseContent.AccountNumber + "|").append(baseContent.cur + "|").append(closeBal + "|").append(availBal + "|")
//                                        .append(openBal + "|").append(baseContent.transDate + "|").append(baseContent.date2 + "|" + baseContent.date2);
//                                FileHelper.writeFile(dealedPath, balanceContent.toString(), getCharset());
//                                WriteBankLogLn2("写入文件：" + dealedPath + ",文件内容 \r\n" + balanceContent.toString());
//                            }
//                        }
//                    }
//                }
//                //开始解析明细数据
//                DetailContexts[] AllDetail =  listMap.get(contents);
//                if(AllDetail.length>0){
//                    for(DetailContexts i : AllDetail){
//                        //获取明细信息
//                        ankMT942Details(i);
//                    }
//                }
//                WriteBankLogLn("MT942文件处理完成");
//                renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("SuccessPath")) + File.separator + name);
//            } else if(name.toUpperCase().contains("MEIXIXI") ){
//                   //针对批量付款状态文件处理
//                String ackContent = FtpUtil.getTextFromFile(File.separator + name, getCharset());
//                WriteBankLogLn("确认文件：" + File.separator + name + "内容为：" + ackContent);
//                StringBuilder tmpSbMsg = new StringBuilder();
//                XmlTextReader tmpBkReader = loadBankRespXmlReader(ackContent, tmpSbMsg);
//                if (tmpBkReader != null) {
//                    String tmpRetCode = tmpBkReader.getFirstText("/Document/CstmrPmtStsRpt/OrgnlGrpInfAndSts/OrgnlMsgId");
//                    if (!com.fingard.text.StringHelper.isNullOrEmpty(tmpRetCode)) {
//                        //文件重新命名
//                        String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//
//                        String newPath = trimEndFileSp(getBankConfig().getValueAsString("BATFilePath"));
//
//                        File file = new File(newPath);
//                        if(!file.exists()){
//                            file.mkdirs();
//                        }
//                        //交易凭证对应状态文件
//                        name = name.substring(0,name.indexOf(".")) + tmpRetCode + ".XML";
//                        renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("ACKFilePath")) + File.separator + name);
//                    }
//                }
//            } else {
//                String oldFilePath  = trimEndFileSp(getBankConfig().getValueAsString("DecryptPath")) + File.separator + name;
//                WriteBankLogLn("文件不属于ACK,MT,MT942类型，移到处理失败目录");
//                renameTo(oldFilePath, trimEndFileSp(getBankConfig().getValueAsString("ExceptionPath")) + File.separator + name);
//            }
//        }
//    }
//
//    private void ankMT942Details(DetailContexts i) throws Exception{
//        StringBuilder transDetail = new StringBuilder();
//        //创建存放解析后的数据文件夹
//        String file =trimEndFileSp(getBankConfig().getValueAsString("MT942Path")) + File.separator + i.fileDate;
//        if(!existFile(file)){
//            FileHelper.mkdir(file);
//        }
//        //String mtDetail=file+File.separator+"MT942FILE.txt";//统计所有流水
//        String filePath=file+File.separator+i.AccountNumber+"_7515.txt";//统计帐号流水
//        // 账号 | 币种 | 交易日期| 交易时间| 计息日期 | 交易金额 |借贷标识| 账户余额 |对方账号|对方户名 |对方银行 |用途 |流水号 |票据类型
//        DecimalFormat format =new DecimalFormat("0.00");
//        String[] detail = new String[]{i.AccountNumber,i.cur,i.TranDate,i.TranTime,i.valueDate,i.TransAmt,i.CDFlag,"0",
//                StringHelper.isNullOrEmpty(i.RecAccNum)?" ":i.RecAccNum,StringHelper.isNullOrEmpty(i.RecAccName)?" ":i.RecAccName,
//                StringHelper.isNullOrEmpty(i.RecAccBannk)?" ":i.RecAccBannk,StringHelper.isNullOrEmpty(i.Usage)?" ":i.Usage,
//                StringHelper.isNullOrEmpty(i.seqNo)?" ":i.seqNo,StringHelper.isNullOrEmpty(i.billType)?" ":i.billType};
//        for(int j=0;j<detail.length;j++){
//            if(j<detail.length-1) {
//                transDetail.append(detail[j].replaceAll("[\\r\\n]","")+"|");
//            }else {
//                transDetail.append(detail[j].replaceAll("[\\r\\n]","")+"\r\n");
//            }
//        }
//        FileHelper.appendFile(filePath,transDetail.toString(),"GBK");
//        WriteBankLogLn2("MT942文件处理完成，追加文件：" + file+",追加明细内容 \r\n"+transDetail.toString());
//        //FileHelper.appendFile(mtDetail,transDetail.toString(),"GBK");
//        //WriteBankLogLn2("MT942FILE文件处理完成，追加文件：" + file+",追加明细内容 \r\n"+transDetail.toString());
//    }
//
//    private void ankMT940Details(DetailContexts i) throws Exception{
//        StringBuilder transDetail = new StringBuilder();
//        //创建存放解析后的数据文件夹
//        String file =trimEndFileSp(getBankConfig().getValueAsString("MTPath")) + File.separator + i.fileDate;
//        if(!existFile(file)){
//            FileHelper.mkdir(file);
//        }
//        //String mtDetail=file+File.separator+"MT942FILE.txt";//统计所有流水
//        String filePath=file+File.separator+i.AccountNumber+"_7516.txt";//统计帐号流水
//        // 账号 | 币种 | 交易日期| 交易时间| 计息日期 | 交易金额 |借贷标识| 账户余额 |对方账号|对方户名 |对方银行 |用途 |流水号 |票据类型
//        DecimalFormat format =new DecimalFormat("0.00");
//        String[] detail = new String[]{i.AccountNumber,i.cur,i.TranDate,i.TranTime,i.valueDate,i.TransAmt,i.CDFlag,"0",
//                StringHelper.isNullOrEmpty(i.RecAccNum)?" ":i.RecAccNum,StringHelper.isNullOrEmpty(i.RecAccName)?" ":i.RecAccName,
//                StringHelper.isNullOrEmpty(i.RecAccBannk)?" ":i.RecAccBannk,StringHelper.isNullOrEmpty(i.Usage)?" ":i.Usage,
//                StringHelper.isNullOrEmpty(i.seqNo)?" ":i.seqNo,StringHelper.isNullOrEmpty(i.billType)?" ":i.billType};
//        for(int j=0;j<detail.length;j++){
//            if(j<detail.length-1) {
//                transDetail.append(detail[j].replaceAll("[\\r\\n]","")+"|");
//            }else {
//                transDetail.append(detail[j].replaceAll("[\\r\\n]","")+"\r\n");
//            }
//        }
//        FileHelper.appendFile(filePath,transDetail.toString(),"GBK");
//        WriteBankLogLn2("MT940文件处理完成，追加文件：" + file+",追加明细内容 \r\n"+transDetail.toString());
//        //FileHelper.appendFile(mtDetail,transDetail.toString(),"GBK");
//        //WriteBankLogLn2("MT942FILE文件处理完成，追加文件：" + file+",追加明细内容 \r\n"+transDetail.toString());
//    }
//
//    /**
//     * 文件移到
//     * @param source 原地址
//     * @param target 新地址
//     * @return
//     */
//    protected boolean renameTo(String source,String target){
//        boolean flag = new File(source).renameTo(new File(target));
//        if(flag){
//            WriteBankLogLn2("文件："+source+" ---移动至---\r\n"+target+"  成功");
//        }else {
//            WriteBankLogLn2("文件："+source+" ---移动至---\r\n"+target+"  失败");
//        }
//        return flag;
//    }
//
//    public boolean judgeMTStatu(String p_ReqSeqID) throws Exception{
////        Date d = new Date();
////        String date = Format.Date8Format.format(d);
////        String mtFilePath  = getBankConfig().getValueAsString("MTPath") + File.separator + date + File.separator+"MTFILE";
////        if(!existFile(mtFilePath)){
////            return false;
////        }
////        Map<List<BaseContent>,DetailContexts[]> myMap = analysisMTFile(mtFilePath);
////        List<BaseContent> contents = null;
////        for(List<BaseContent> key : myMap.keySet())
////        {
////            contents = key;
////        }
////
////        DetailContexts[] AllDetail =  myMap.get(contents);
////        if(!StringHelper.isNullOrEmpty(p_ReqSeqID)){             ///1944,对应流水号是否存在
////            for(DetailContexts detail : AllDetail){
////                if(detail == null){
////                    continue;
////                }
////                if(p_ReqSeqID.equals(detail.Abstr)){
////                    return true;
////                }
////            }
////        }
////        return false;
//        WriteBankLogLn("开始处理明细");
//        Calendar cl =  new GregorianCalendar();
//        String daybefore =  getBankConfig().getValueAsString("daybefore");
//        //默认查7天
//        Integer day  = new Integer(7);
//        if(!StringHelper.isNullOrEmpty(daybefore)){
//             day = Integer.parseInt(daybefore);
//        }
//
//        cl.set(Calendar.DAY_OF_YEAR,Calendar.DAY_OF_YEAR - day);
//        Date d = cl.getTime();
//        String getMTPath  = trimEndFileSp(getBankConfig().getValueAsString("DealedPath"));
//        WriteBankLogLn("查找文件夹：" + getMTPath);
//        File mtFiles =  new File(getMTPath);
//        File[] files  = mtFiles.listFiles();
//        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
//        for(File f : files){
//            if(f.getName().contains("MT") && sdf.parse(f.getName().split("_")[2]).after(d)){
//                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
//                String sLine;
//                while((sLine = br.readLine())!=null){
//                    if(sLine.contains(p_ReqSeqID)){
//                        br.close();
//                        WriteBankLogLn("确认文件：" + f.getName());
//                        return true;
//                    }
//                }
//                br.close();
//            }
//        }
//        WriteBankLogLn("查询结束");
//        return false;
//    }
//
//    public String[] judgeMTStatu2(String p_ReqSeqID,Date payDate) throws Exception{
//        WriteBankLogLn("开始处理明细");
//        //当前日期
//        Date date = new Date();
//        Calendar calendarToDay=Calendar.getInstance();
//        calendarToDay.setTime(date);
//        //交易日期
//        Calendar calendar = Calendar.getInstance();
//        calendar.setTime(payDate);
//        //boolean flag=false;//流水号是否存在标识
//        String result[]=new String[]{"",""};//ACK文件状态码
//        //String daybefore = StringHelper.isNullOrEmpty(getBankConfig().getValueAsString("daybefore"))?"7":getBankConfig().getValueAsString("daybefore");//默认查询7
//        String getAckPath = trimEndFileSp(getBankConfig().getValueAsString("ACKFilePath"));
//        String getAck  = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))+ File.separator+Format.Date8Format.format(calendar.getTime());//ACK文件路径
//        String getMTPath  = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))+ File.separator+Format.Date8Format.format(calendar.getTime());//MT文件路径
//        String getMT942Path= trimEndFileSp(getBankConfig().getValueAsString("MT942Path"))+ File.separator+Format.Date8Format.format(calendar.getTime());//MT942文件路径
//        while(Integer.parseInt(Format.Date8Format.format(calendar.getTime()))<=Integer.parseInt(Format.Date8Format.format(calendarToDay.getTime()))){
//        //for(int i=0;i<Integer.parseInt(daybefore);i++){
//            //1.0 首先遍历ACK文件
//            if(StringHelper.isNullOrEmpty(result[0])){
//                WriteBankLogLn("遍历ACK文件start："+getAck+"流水号"+p_ReqSeqID);
//                File mtFiles =  new File(getAckPath);
//                if(mtFiles.listFiles()!=null){
//                    //遍历所有的ACK文件
//                    for(File file:mtFiles.listFiles()){
//                        WriteBankLogLn("遍历ACK文件start："+getAck + File.separator + file.getName());
//                        if(file.getName().contains(p_ReqSeqID) && (file.getName().contains("POSACK") || file.getName().contains("NEGACK") || file.getName().contains("MEIXIXI"))){
//                            if(file.getName().contains("MEIXIXI")){
//                               String ackContent = FtpUtil.getTextFromFile(file.getPath(), getCharset());
//                                {
//                                    WriteBankLogLn("确认文件：" + file.getPath() + "内容为：" + ackContent);
//                                    StringBuilder tmpSbMsg = new StringBuilder();
//                                    XmlTextReader tmpBkReader = loadBankRespXmlReader(ackContent, tmpSbMsg);
//                                    if (tmpBkReader != null) {
//                                        String tmpRetCode = tmpBkReader.getFirstText("/Document/CstmrPmtStsRpt/OrgnlGrpInfAndSts/OrgnlMsgId");
//                                        if (!com.fingard.text.StringHelper.isNullOrEmpty(tmpRetCode)) {
//
//                                            result[0] = "0";
//
//                                            result[1] = tmpBkReader.getFirstText("/Document/CstmrPmtStsRpt/OrgnlPmtInfAndSts/TxInfAndSts/TxSts");
//                                        }
//                                    }
//                                }
//                                return result;
//                            }
//                            String fileContent="";
//                            if (FileHelper.existFile(file.getPath())) {
//                                fileContent = FtpUtil.getTextFromFile(file.getPath(), getCharset());
//                            }
//                            if(!StringHelper.isNullOrEmpty(fileContent)){
//                                String[] names=fileContent.split("\\|");
//                                if(names.length==2){
//                                    result[0]=names[1].replaceAll("\r","").replaceAll("\n","");
//                                    result[1]="";
//                                }else if(names.length==3){
//                                    result[0]=names[1];
//                                    result[1]=names[2].replaceAll("\r","").replaceAll("\n","");
//                                }
//                            }
//                        } else if(file.getName().contains(p_ReqSeqID) && file.getName().contains("FILEACK")){
//                            if(StringHelper.isNullOrEmpty(result[0])){
//                                String fileContent="";
//                                if (FileHelper.existFile(file.getPath())) {
//                                    fileContent = FtpUtil.getTextFromFile(file.getPath(), getCharset());
//                                }
//                                if(!StringHelper.isNullOrEmpty(fileContent)){
//                                    String[] names=fileContent.split("\\|");
//                                    if(names.length==2){
//                                        result[0]=names[1].replaceAll("\r","").replaceAll("\n","");
//                                        result[1]="";
//                                    }else if(names.length==3){
//                                        result[0]=names[1];
//                                        result[1]=names[2].replaceAll("\r","").replaceAll("\n","");
//                                    }
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//            WriteBankLogLn("遍历ACK文件end："+getAck+"状态码："+result[0]);
//            if(!StringHelper.isNullOrEmpty(getBankConfig().getValueAsString("errorCode"))
//                    && !StringHelper.isNullOrEmpty(result[0]) && getBankConfig().getValueAsString("errorCode").contains(result[0])){
//                result[0]="2";
//                return result;//接收失败
//            }else {
//                //1.1 遍历940文件流水
//                WriteBankLogLn("遍历940文件start："+getMTPath+"流水号"+p_ReqSeqID);
//                File mt940Files =  new File(getMTPath);
//                if(mt940Files.listFiles()!=null){
//                    //遍历所有的7516文件
//                    for(File file:mt940Files.listFiles()){
//                        if(file.getName().contains("_7516.txt")){
//                            WriteBankLogLn("遍历940文件start："+getMTPath + File.separator + file.getName());
//                            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
//                            String sLine;
//                            while ((sLine = br.readLine()) != null) {
//                                if (sLine.contains(p_ReqSeqID)) {//当天MT942文件存在该笔流水，交易成功
//                                    br.close();
//                                    WriteBankLogLn("确认文件：" + getMT942Path + File.separator + file.getName());
//                                    result[0]="0";
//                                    result[1]="1";
//                                    return result;
//                                }
//                            }
//                            br.close();
//                        }
//                    }
//                }
//                WriteBankLogLn("遍历940文件end："+getMTPath+"不存在，流水号"+p_ReqSeqID);
//                //1.2 遍历MT940文件不存在，则遍历MT942文件流水
//                WriteBankLogLn("遍历942文件start："+getMT942Path+"流水号"+p_ReqSeqID);
//                File mtFiles =  new File(getMT942Path);
//                if(mtFiles.listFiles()!=null){
//                    //遍历所有的7515文件
//                    for(File file:mtFiles.listFiles()){
//                        if(file.getName().contains("_7515.txt")){
//                            WriteBankLogLn("遍历942文件start："+getMT942Path + File.separator + file.getName());
//                            BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
//                            String sLine;
//                            while ((sLine = br.readLine()) != null) {
//                                if (sLine.contains(p_ReqSeqID)) {//当天MT942文件存在该笔流水，交易成功
//                                    br.close();
//                                    WriteBankLogLn("确认文件：" + getMT942Path + File.separator + file.getName());
//                                    result[0]="0";
//                                    result[1]="1";
//                                    return result;
//                                }
//                            }
//                            br.close();
//                        }
//                    }
//                }
//                WriteBankLogLn("遍历942文件end："+getMT942Path+"不存在,流水号"+p_ReqSeqID);
//            }
//            //1.3 遍历MT942文件流水不存在，则开始遍历交易日期后一天
//            if(Integer.parseInt(Format.Date8Format.format(calendar.getTime()))<Integer.parseInt(Format.Date8Format.format(calendarToDay.getTime()))){
//                WriteBankLogLn("在"+File.separator+Format.Date8Format.format(calendar.getTime())+"日期的MT940,MT942文件不存在,往后一天遍历");
//            }else{
//                WriteBankLogLn("在"+File.separator+Format.Date8Format.format(calendar.getTime())+"日期的MT940,MT942文件不存在,银行未返回明细流水");
//            }
//            calendar.add(Calendar.DAY_OF_MONTH,+1);
//            getAck=trimEndFileSp(getBankConfig().getValueAsString("MTPath"))+ File.separator+Format.Date8Format.format(calendar.getTime());//ACK文件路径
//            getMTPath  = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))+ File.separator+Format.Date8Format.format(calendar.getTime());//MT文件路径
//            getMT942Path = trimEndFileSp(getBankConfig().getValueAsString("MT942Path"))+ File.separator+Format.Date8Format.format(calendar.getTime());//MT942文件路径
//        }
//        WriteBankLogLn("查询结束");
//        result[0]="1";
//        result[1]="";
//        return result;
//        /*while (!FileHelper.existFile(getMTPath)&&num<Integer.parseInt("".equals(daybefore)?"7":daybefore)){
//            num++;
//            WriteBankLogLn("在"+calendar+"日期的MT940文件不存在,继续往前一天遍历，第"+num+"次");
//            calendar.add(Calendar.DAY_OF_MONTH,-1);
//            getMTPath  = trimEndFileSp(getBankConfig().getValueAsString("MTPath"))+ File.separator+Format.Date8Format.format(calendar.getTime())+File.separator+"MTFILE";//MT文件路径
//        }
//        //开始遍历文件查询流水号
//        if(FileHelper.existFile(getMTPath)){//说明当天MT文件生成。判断MT文件
//            File mtFiles =  new File(getMTPath);
//            if(mtFiles.isFile()){
//                //File[] files  = mtFiles.listFiles();
//                //for(File f : files) {
//                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(mtFiles)));
//                String sLine;
//                while ((sLine = br.readLine()) != null) {
//                    if (sLine.contains(p_ReqSeqID)) {//当天MT文件存在该笔流水，交易成功
//                        br.close();
//                        WriteBankLogLn("确认文件：" + mtFiles.getName());
//                        return true;
//                    }
//                }
//                br.close();
//                //}
//            }
//        }
//        WriteBankLogLn("查询结束");
//        return false;*/
//    }
//
//    protected String FeeBearer(String costmode){
//        if("OUR".equals(costmode)){
//            costmode="DEBT";
//        }else if("BEN".equals(costmode)){
//            costmode="CRED";
//        }else if("SHA".equals(costmode)){
//            costmode="SHAR";
//        }else {
//            costmode="SLEV";
//        }
//        return costmode;
//    }
//
//    protected String base64toStr(String str) throws Exception{
//        String base64Sign = Base64.encodeBase64String((str.getBytes("UTF-8"))).replaceAll("(\\r|\\n)", "");
//        String headerMsg = "<?xml version=\"1.0\"?>" + "\r\n";
//        String baseXml = headerMsg + "<Request><paymentBase64>" + base64Sign + "</paymentBase64></Request>";
//        return baseXml;
//    }
//
//}
